///*******************************************************************************
// * Copyright (c) 2004, 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.tests.zoom;
//
//import org.eclipse.ui.IWorkbenchPart;
//
///**
// * This class contains tests that apply to both views and editors. Subclasses
// * will overload the abstract methods to determine whether editors or views
// * are being tested, and can define additional tests that only apply to editors
// * or views (or that have different results).
// */
//public abstract class CloseTest extends ZoomTestCase {
//    public CloseTest(String name) {
//        super(name);
//    }
//    
//    public abstract IWorkbenchPart getStackedPart1();
//    public abstract IWorkbenchPart getStackedPart2();
//    public abstract IWorkbenchPart getUnstackedPart();
//    
//    /**
//     * <p>Test: Zoom a part and hide an inactive fast view</p>
//     * <p>Expected result: Part remains zoomed</p>
//     */
//    public void testCloseInactiveFastView() {
//        IWorkbenchPart zoomPart = getStackedPart1();
//        
//        zoom(zoomPart);
//        close(fastView);
//        
//        assertZoomed(zoomPart);
//        assertActive(zoomPart);
//    }
//    
//    /**
//     * <p>Test: Zoom a part, activate a fast view, then hide the fast view</p>
//     * <p>Expected result: Part remains zoomed</p>
//     */
//    public void testCloseActiveFastView() {
//        IWorkbenchPart zoomPart = getStackedPart1();
//        
//        zoom(zoomPart);
//        page.activate(fastView);
//        close(fastView);
//        
//        assertZoomed(zoomPart);
//        assertActive(zoomPart);
//    }
//    
//    /**
//     * <p>Test: Activate an unstacked view, zoom and activate a stacked part, then close the active part.</p>
//     * <p>Expected result: Stack remains zoomed, another part in the zoomed stack is active</p>
//     * <p>Note: This ensures that when the active part is closed, it will try to activate a part that
//     *    doesn't affect the zoom even if something else was activated more recently.</p>
//     */
//    public void testCloseZoomedStackedPartAfterActivatingView() {
//        IWorkbenchPart zoomPart = getStackedPart1();
//        IWorkbenchPart otherStackedPart = getStackedPart2();
//        IWorkbenchPart unstackedPart = unstackedView;
//        
//        page.activate(unstackedPart);
//        zoom(zoomPart);
//        close(zoomPart);
//                
//        assertZoomed(otherStackedPart);
//        assertActive(otherStackedPart);
//    }
//
//    /**
//     * <p>Test: Activate an unstacked editor, zoom and activate a stacked part, then close the active part.</p>
//     * <p>Expected result: Stack remains zoomed, another part in the zoomed stack is active</p>
//     * <p>Note: This ensures that when the active part is closed, it will try to activate a part that
//     *    doesn't affect the zoom even if something else was activated more recently.</p>
//     */
//    public void testCloseZoomedStackedPartAfterActivatingEditor() {
//        IWorkbenchPart zoomPart = getStackedPart1();
//        IWorkbenchPart otherStackedPart = getStackedPart2();
//        IWorkbenchPart unstackedPart = editor3;
//        
//        page.activate(unstackedPart);
//        zoom(zoomPart);
//        close(zoomPart);
//        
//        assertZoomed(otherStackedPart);
//        assertActive(otherStackedPart);
//    }
//
//    /**
//     * <p>Test: Activate an unstacked editor, activate a stacked part, then close the active part.</p>
//     * <p>Expected result: The unstacked part becomes active</p>
//     * <p>Note: This isn't really a zoom test, but it ensures that the behavior tested by 
//     *    testHideZoomedStackedPartAfterActivatingEditor does not affect activation when there is no zoom.</p>
//     */
//    public void testCloseUnzoomedStackedPartAfterActivatingEditor() {
//        IWorkbenchPart activePart = getStackedPart1();
//        IWorkbenchPart unstackedPart = editor3;
//        
//        page.activate(unstackedPart);
//        page.activate(activePart);
//        close(activePart);
//        
//        assertZoomed(null);
//        assertActive(unstackedPart);
//    }
//        
//    /**
//     * <p>Test: Zoom an unstacked part and close it.</p>
//     * <p>Expected result: The page is unzoomed and the previously active part becomes active</p>
//     * <p>Note: This ensures that the activation list is used if there is nothing available
//     *    in the currently zoomed stack.</p>
//     */
//    public void testCloseZoomedUnstackedPartAfterActivatingEditor() {
//        IWorkbenchPart previousActive = editor1;
//        IWorkbenchPart zoomedPart = getUnstackedPart();
//        
//        page.activate(previousActive);
//        zoom(zoomedPart);
//        close(zoomedPart);
//
//        assertZoomed(null);
//        assertActive(previousActive);
//    }
//
//    /**
//     * <p>Test: Zoom a stacked part and close an inactive, unstacked editor.</p>
//     * <p>Expected result: No change in activation or zoom</p>
//     */
//    public void testCloseHiddenUnstackedEditor() {
//        IWorkbenchPart zoomedPart = getStackedPart1();
//        
//        // Activate another editor to ensure that we aren't closing the active editor
//        page.activate(editor1);
//        zoom(zoomedPart);
//        close(editor3);
//
//        assertZoomed(zoomedPart);
//        assertActive(zoomedPart);
//    }
//    
//    /**
//     * <p>Test: Zoom a stacked part and close an inactive, unstacked view.</p>
//     * <p>Expected result: No change in activation or zoom</p>
//     */
//    public void testCloseHiddenUnstackedView() {
//        IWorkbenchPart zoomedPart = getStackedPart1();
//        
//        zoom(zoomedPart);
//        close(unstackedView);
//        
//        assertZoomed(zoomedPart);
//        assertActive(zoomedPart);
//    }
//    
//}
